COO Communities

The primary geographic unit of this assessment is the census tract. As is the case with many communities, the census geographies do not coincide exactly with the formal geographic boundary of the study’s three sites, and should be considered as spatial approximations of these communities.

Listed below are the geographic identifiers of the census tracts that approximate each site.

Rainier Valley
(2009)
Rainier Valley
(2015)
White Center
(2009)
White Center
(2015)
SeaTac/Tukwila
(2009)
SeaTac/Tukwila
(2015)
53033010000 53033010001 53033026900 53033026600 53033026100 53033026200
53033010300 53033010300 53033026500 53033026700 53033026200 53033027300
53033010400 53033010401 53033026600 53033026500 53033026300 53033028000
53033011000 53033011001 53033026700 53033026801 53033026400 53033028100
53033011101 53033011002 53033026801 53033026802 53033027100 53033028300
53033011102 53033011101 53033026802 53033027000 53033027200 53033028402
53033011700 53033011102 53033027000 NA 53033027300 53033028403
53033011800 53033011700 NA NA 53033028000 53033028500
53033011900 53033011800 NA NA 53033028100 53033028700
NA 53033011900 NA NA 53033028200 53033028801
NA NA NA NA 53033028300 53033028802
NA NA NA NA 53033028402 53033029101
NA NA NA NA 53033028403 53033026100
NA NA NA NA 53033028500 53033026200
NA NA NA NA 53033028700 53033026300
NA NA NA NA 53033028801 53033026400
NA NA NA NA 53033028802 53033027100
NA NA NA NA 53033029100 53033027200
NA NA NA NA NA 53033027300
NA NA NA NA NA 53033028100
NA NA NA NA NA 53033028200
NA NA NA NA NA 53033028300
NA NA NA NA NA 53033028802

To create the community approximations, the tract boundaries of each community are merged and each of the census table estimates are aggregated. In addition to combining the estimates, this method also recalculates the standard error for each census table. It should be noted that this method is only valid for census tables representing count data.1

Community Maps


  1. This limitation is made explicit by the acs package creator, Ezra Haber Glenn, here.

LS0tDQpkZl9wcmludDogdGliYmxlDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6DQogICAgZGVmYXVsdA0KICBwZGZfZG9jdW1lbnQ6DQogICAga2VlcF90ZXg6IHllcw0KYWx3YXlzX2FsbG93X2h0bWw6IHllcw0KLS0tDQoNCmBgYHtyIGNlbnN1cy1hY3MtY29tbXMtc2V0dXAsIGVjaG8gPSBGQUxTRSwgd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFLGNvbW1lbnQ9RkFMU0V9DQpsaWJyYXJ5KHBseXIpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShycHJvanJvb3QpDQpsaWJyYXJ5KHJnZGFsKQ0KbGlicmFyeShzcCkNCmxpYnJhcnkocmdlb3MpDQpsaWJyYXJ5KHRpZ3JpcykNCmxpYnJhcnkobGVhZmxldCkNCmxpYnJhcnkoZ2d0aGVtZXMpDQpsaWJyYXJ5KG1hZ3JpdHRyKQ0KbGlicmFyeShzdHJpbmdyKQ0KbGlicmFyeShkb3dubG9hZGVyKQ0KbGlicmFyeSh3ZWJzaG90KQ0KbGlicmFyeShodG1sdG9vbHMpDQpsaWJyYXJ5KGdwbG90cykNCmxpYnJhcnkoZ2dtYXApDQpsaWJyYXJ5KHNoaW55KQ0KbGlicmFyeShodG1sd2lkZ2V0cykNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeShhY3MpDQpsaWJyYXJ5KFJDb2xvckJyZXdlcikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShmb3JjYXRzKQ0KbGlicmFyeShtaXNjZ2lzKQ0KbGlicmFyeShvcGVyYXRvci50b29scykNCmxpYnJhcnkobGVhZmxldC5leHRyYXMpDQpsaWJyYXJ5KHZpcmlkaXNMaXRlKQ0KbGlicmFyeShzZikNCnJvb3QgPC0gcnByb2pyb290Ojppc19yc3R1ZGlvX3Byb2plY3QNCnJvb3RfZmlsZSA8LSByb290JG1ha2VfZml4X2ZpbGUoKQ0Kb3B0c19jaHVuayRzZXQoZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgY29tbWVudD1GQUxTRSkNCg0KYGBgDQoNCmBgYHtyIGNlbnN1cy1hY3MtY29tbXMtY29sb3JzfQ0KZ3JlZW4gPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W1siZ3JlZW4iXV0NCmJsdWUgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W1siYmx1ZSJdXQ0Kb3JhbmdlIDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtbIm9yYW5nZSJdXQ0KcmVkIDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtbInJlZCJdXQ0KdGVhbCA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbWyJ0ZWFsIl1dDQpwYWxfcmdiXzQgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W2MoInJlZCIsImdvbGQiLCJncmVlbiIsImJsdWUiKV0gJT4lIHVubGlzdCAlPiUgcGFsZXR0ZSgpDQpwYWxfcmdiXzQgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W2MoInJlZCIsImdvbGQiLCJncmVlbiIsImJsdWUiKV0gJT4lIHVubGlzdCAlPiUgcGFsZXR0ZSgpDQpwYWxfcmdiXzYgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W2MoInJlZCIsImdvbGQiLCJncmVlbiIsImJsdWUiLCJvcmFuZ2UiLCJwdXJwbGUiKV0gJT4lIHVubGlzdCAlPiUgcGFsZXR0ZSgpDQpwYWxfcmdiXzYgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W2MoInJlZCIsImdvbGQiLCJncmVlbiIsImJsdWUiLCJvcmFuZ2UiLCJwdXJwbGUiKV0gJT4lIHVubGlzdCAlPiUgcGFsZXR0ZSgpDQpwcm9qX2xpZ2h0X2dyZXkgPC0gY29sMmhleCgiZ3JleTc1IikNCnByb2pfZ3JleSA8LSBjb2wyaGV4KCJncmV5NTAiKQ0KcHJval9kYXJrX2dyZXkgPC0gY29sMmhleCgiZ3JleTI1IikNCg0KYGBgDQoNCg0KIyMjIENPTyBDb21tdW5pdGllcyB7LX0NCg0KVGhlIHByaW1hcnkgZ2VvZ3JhcGhpYyB1bml0IG9mIHRoaXMgYXNzZXNzbWVudCBpcyB0aGUgW2NlbnN1cyB0cmFjdF0oaHR0cHM6Ly93d3cuY2Vuc3VzLmdvdi9nZW8vcmVmZXJlbmNlL2d0Yy9ndGNfY3QuaHRtbCkuIEFzIGlzIHRoZSBjYXNlIHdpdGggbWFueSBjb21tdW5pdGllcywgdGhlIGNlbnN1cyBnZW9ncmFwaGllcyBkbyBub3QgY29pbmNpZGUgZXhhY3RseSB3aXRoIHRoZSBmb3JtYWwgZ2VvZ3JhcGhpYyBib3VuZGFyeSBvZiB0aGUgc3R1ZHkncyB0aHJlZSBzaXRlcywgYW5kIHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIF9zcGF0aWFsIGFwcHJveGltYXRpb25zXyBvZiB0aGVzZSBjb21tdW5pdGllcy4NCg0KTGlzdGVkIGJlbG93IGFyZSB0aGUgZ2VvZ3JhcGhpYyBpZGVudGlmaWVycyBvZiB0aGUgY2Vuc3VzIHRyYWN0cyB0aGF0IGFwcHJveGltYXRlIGVhY2ggc2l0ZS4NCg0KYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1maWxlcywgcmVzdWx0cz0iYXNpcyJ9DQoNCiMgQ2Vuc3VzIHRyYWN0IGJvdW5kYXJpZXMgZm9yIHRoZSAyMDE1IGRhdGENCg0KIyBSYWluaWVyIFZhbGxleQ0KcnYgPC0gYygiNTMwMzMwMTAwMDEiLCAiNTMwMzMwMTAzMDAiLCAiNTMwMzMwMTA0MDEiLCAiNTMwMzMwMTEwMDEiLCAiNTMwMzMwMTEwMDIiLCAiNTMwMzMwMTExMDEiLCI1MzAzMzAxMTEwMiIsICI1MzAzMzAxMTcwMCIsICI1MzAzMzAxMTgwMCIsICI1MzAzMzAxMTkwMCIpDQoNCiMgV2hpdGUgQ2VudGVyDQp3YyA8LSBjKCI1MzAzMzAyNjYwMCIsIjUzMDMzMDI2NzAwIiwiNTMwMzMwMjY1MDAiLCI1MzAzMzAyNjgwMSIsIjUzMDMzMDI2ODAyIiwiNTMwMzMwMjcwMDAiKQ0KDQojIFNlYVRhYy9UdWt3aWxhDQoNCnN0Y19odXMgPC0gcmVhZF9jc3Yocm9vdF9maWxlKCcxLWRhdGEvMy1leHRlcm5hbC9tYW51YWwvc2VhdGFjLXRyL0RFQ18xMF9TRjFfSDEvREVDXzEwX1NGMV9IMV93aXRoX2Fubi5jc3YnKSwgDQogICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoSWQyID0gY29sX2NoYXJhY3RlcigpKSwgc2tpcCA9IDEpDQoNCnR1a19odXMgPC0gcmVhZF9jc3Yocm9vdF9maWxlKCcxLWRhdGEvMy1leHRlcm5hbC9tYW51YWwvdHVrd2lsYS10ci9ERUNfMTBfU0YxX0gxL0RFQ18xMF9TRjFfSDFfd2l0aF9hbm4uY3N2JyksIA0KICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKElkMiA9IGNvbF9jaGFyYWN0ZXIoKSksIA0KICAgICAgICAgICAgICAgICAgICBza2lwID0gMSkNCg0Kc3RjIDwtICBwYXN0ZShzdWJzdHIoeCA9IHN0Y19odXMkSWQyLDEsMiksc3Vic3RyKHggPSBzdGNfaHVzJElkMiw4LDE2KSxzZXAgPSAiIikNCg0KdHVrIDwtICBwYXN0ZShzdWJzdHIoeCA9IHR1a19odXMkSWQyLDEsMiksc3Vic3RyKHggPSB0dWtfaHVzJElkMiw4LDE2KSxzZXAgPSAiIikNCg0Kc3RjdHVrIDwtIGMoc3RjLHR1aykNCg0KIyBDZW5zdXMgdHJhY3QgYm91bmRhcmllcyBmb3IgdGhlIDIwMDkgZGF0YQ0KDQppZighZXhpc3RzKCdjdycpKXtjdyA8LSByZWFkX3Jkcyhyb290X2ZpbGUoJzEtZGF0YS80LWludGVyaW0vY3ctMjAwMC0yMDEwLnJkcycpKX0NCg0KZ2V0X0dFT0lEMjAwOSA8LSBmdW5jdGlvbihnZW9pZHNfMjAxNSwgY3cpew0KICAgICAgICAjIGJyb3dzZXIoKQ0KICAgICAgICBjdyAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKEdFT0lEXzIwMTAgJWluJSBnZW9pZHNfMjAxNSkgJT4lIA0KICAgICAgICAgICAgICAgIGZpbHRlcihXRUlHSFQgPiAuMDEpICU+JQ0KICAgICAgICAgICAgICAgIGV4dHJhY3QyKCdHRU9JRF8yMDAwJykgJT4lIHVuaXF1ZSgpDQp9DQoNCmlmKCFmaWxlLmV4aXN0cyhyb290X2ZpbGUoJzEtZGF0YS80LWludGVyaW0vY29vLWNvbW0tdHItZGYucmRzJykpKXsNCiAgICAgICAgbGlzdCgNCiAgICAgICAgICAgICAgICAnUlZfMjAwOScgPSBnZXRfR0VPSUQyMDA5KHJ2LGN3KSwNCiAgICAgICAgICAgICAgICAnUlZfMjAxNScgPSBydiwNCiAgICAgICAgICAgICAgICAnV0NfMjAwOScgPSBnZXRfR0VPSUQyMDA5KHdjLGN3KSwNCiAgICAgICAgICAgICAgICAnV0NfMjAxNScgPSB3YywNCiAgICAgICAgICAgICAgICAnU1RLV18yMDA5JyA9IGdldF9HRU9JRDIwMDkoc3RjdHVrLGN3KSwNCiAgICAgICAgICAgICAgICAnU1RLV18yMDE1JyA9IHN0Y3R1aw0KICAgICAgICApICU+JSANCiAgICAgICAgICAgICAgICBtaXNjZ2lzOjpjYmluZF9maWxsKC4pICU+JQ0KICAgICAgICAgICAgICAgIGFzX3RpYmJsZSgpICU+JQ0KICAgICAgICAgICAgICAgIHNldF9jb2xuYW1lcygNCiAgICAgICAgICAgICAgICAgICAgICAgIGMoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWluaWVyIFZhbGxleTxicj4oMjAwOSkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFpbmllciBWYWxsZXk8YnI+KDIwMTUpIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldoaXRlIENlbnRlcjxicj4oMjAwOSkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpdGUgQ2VudGVyPGJyPigyMDE1KSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWFUYWMvVHVrd2lsYTxicj4oMjAwOSkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2VhVGFjL1R1a3dpbGE8YnI+KDIwMTUpIg0KICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICkgJT4lIA0KICAgICAgICAgICAgICAgIHdyaXRlX3Jkcyhyb290X2ZpbGUoJzEtZGF0YS80LWludGVyaW0vY29vLWNvbW0tdHItZGYucmRzJykpDQp9DQoNCnJlYWRfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS9jb28tY29tbS10ci1kZi5yZHMnKSkgJT4lIA0KICAgICAgICBrbml0cjo6a2FibGUoY2FwdGlvbiA9ICJDZW5zdXMgVHJhY3QgR0VPSURzIikNCg0KYGBgDQoNClRvIGNyZWF0ZSB0aGUgY29tbXVuaXR5IGFwcHJveGltYXRpb25zLCB0aGUgdHJhY3QgYm91bmRhcmllcyBvZiBlYWNoIGNvbW11bml0eSBhcmUgbWVyZ2VkIGFuZCBlYWNoIG9mIHRoZSBjZW5zdXMgdGFibGUgZXN0aW1hdGVzIGFyZSBhZ2dyZWdhdGVkLiBJbiBhZGRpdGlvbiB0byBjb21iaW5pbmcgdGhlIGVzdGltYXRlcywgdGhpcyBtZXRob2QgYWxzbyByZWNhbGN1bGF0ZXMgdGhlIHN0YW5kYXJkIGVycm9yIGZvciBlYWNoIGNlbnN1cyB0YWJsZS4gSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdGhpcyBtZXRob2QgaXMgb25seSB2YWxpZCBmb3IgY2Vuc3VzIHRhYmxlcyByZXByZXNlbnRpbmcgY291bnQgZGF0YS5eW1RoaXMgbGltaXRhdGlvbiBpcyBtYWRlIGV4cGxpY2l0IGJ5IHRoZSBgYWNzYCBwYWNrYWdlIGNyZWF0b3IsIEV6cmEgSGFiZXIgR2xlbm4sIFtoZXJlXShodHRwOi8vZWdsZW5uLnNjcmlwdHMubWl0LmVkdS9jaXR5c3RhdGUvKS5dDQoNCmBgYHtyIGNlbnN1cy1hY3MtY29tbXMtY29tYmluZWQtZ2VvbXN9DQoNCmlmKCFleGlzdHMoJ2Fjc19ub3JtbF9zZicpKXthY3Nfbm9ybWxfc2YgPC0gcmVhZF9yZHMocm9vdF9maWxlKCcuLzEtZGF0YS80LWludGVyaW0vY29vLWFjcy1ub3JtbC1zZi5yZHMnKSl9DQoNCiMgTmV3IGNvbHVtbnM6IGBDT01NVU5JVFlgIGFuZCBgQ09NTU1VTklUWV9GVUxMYA0KDQpydjYgPC0gbWFwX2NocihydixzdHJfc3ViLDYsMTEpDQoNCndjNiA8LSBtYXBfY2hyKHdjLHN0cl9zdWIsNiwxMSkNCg0Kc3RjdHVrNiA8LSBtYXBfY2hyKHN0Y3R1ayxzdHJfc3ViLDYsMTEpDQoNCmNvbzYgPC0gYyhydjYsd2M2LHN0Y3R1azYpDQoNCiMgQWdncmVnYXRpb24gZnVuY3Rpb24NCmFnZ3JlZ2F0ZV9jb21tcyA8LSBmdW5jdGlvbihjb2wpew0KICAgICAgICANCiAgICAgICAgY2xhc3MgPC0gY29sICU+JSBjbGFzcygpICU+JSB1bmlxdWUgJT4lIGV4dHJhY3QyKDEpDQogICAgICAgIA0KICAgICAgICAjIENIQVJBQ1RFUiBDT0xVTU5TDQogICAgICAgIGlmKGNsYXNzICVpbiUgJ2NoYXJhY3Rlcicpe05BX2NoYXJhY3Rlcl8NCiAgICAgICAgfWVsc2UgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgIyBMT0dJQ0FMIENPTFVNTlMgDQogICAgICAgICAgICAgICAgaWYoY2xhc3MgJWluJSAnbG9naWNhbCcpeyBOQQ0KICAgICAgICAgICAgICAgIH1lbHNlDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICMgU0ZDIENPTFVNTlMgDQogICAgICAgICAgICAgICAgICAgICAgICBpZihjbGFzcyAlaW4lICdzZmNfTVVMVElQT0xZR09OJyl7IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wgJT4lIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0X3VuaW9uICU+JQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0X2Nhc3QoJ01VTFRJUE9MWUdPTicpICU+JSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdF9idWZmZXIoLjAwMDAwMSkgJT4lIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0X2Nhc3QoJ01VTFRJUE9MWUdPTicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBQ1MgQ09MVU1OUw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjbGFzcyAlaW4lICdsaXN0JyAmIGV4dHJhY3QyKGNvbCwxKSAlPiUgY2xhc3MgJWluJSAnYWNzJyl7IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbCAlPiUgcmVkdWNlKHN1cHByZXNzV2FybmluZ3MocmJpbmQuYWNzKSkgJT4lIGFwcGx5KDEsc3VtKSAlPiUgbGlzdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQp9DQoNCmlmKCFmaWxlLmV4aXN0cyhyb290X2ZpbGUoJy4vMS1kYXRhLzQtaW50ZXJpbS9hY3Nfbm9ybWxfYWxsX2dlb21zX3NmLnJkcycpKSl7DQogICAgICAgIA0KICAgICAgICBhY3Nfbm9ybWxfY29tbXNfc2YgPC0gDQogICAgICAgICAgICAgICAgYWNzX25vcm1sX3NmICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoQ09NTVVOSVRZX0ZVTEwgPSBjYXNlX3doZW4oLiRHRU9JRDYgJWluJSBydjYgfiAnUmFpbmllciBWYWxsZXknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJEdFT0lENiAlaW4lIHdjNiB+ICdXaGl0ZSBDZW50ZXInLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJEdFT0lENiAlaW4lIHN0Y3R1azYgfiAnU2VhVGFjL1R1a3dpbGEnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXyksDQogICAgICAgICAgICAgICAgICAgICAgIENPTU1VTklUWSA9IGNhc2Vfd2hlbiguJEdFT0lENiAlaW4lIHJ2NiB+ICdSVicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJEdFT0lENiAlaW4lIHdjNiB+ICdXQycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJEdFT0lENiAlaW4lIHN0Y3R1azYgfiAnU1RLVycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXykpICU+JSANCiAgICAgICAgICAgICAgICBzZWxlY3QoTkFNRSxOQU1FX0ZVTEwsR0VPSUQ2LENPTU1VTklUWV9GVUxMLENPTU1VTklUWSxldmVyeXRoaW5nKCkpICU+JSANCiAgICAgICAgICAgICAgICB1bmdyb3VwICU+JSANCiAgICAgICAgICAgICAgICBzdF9hc19zZigpDQogICAgICAgIA0KICAgICAgICBjb21tcyA8LQ0KICAgICAgICAgICAgICAgIGFjc19ub3JtbF9jb21tc19zZiAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKCFpcy5uYShDT01NVU5JVFkpKSAlPiUgDQogICAgICAgICAgICAgICAgdW5jbGFzcyAlPiUgDQogICAgICAgICAgICAgICAgYXNfdGliYmxlICU+JSANCiAgICAgICAgICAgICAgICBzbGljZV9yb3dzKCdDT01NVU5JVFknKSAlPiUgDQogICAgICAgICAgICAgICAgZG1hcChhZ2dyZWdhdGVfY29tbXMpICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoZ2VvbWV0cnkgPSBzdF9zZmMoZ2VvbWV0cnkpKSAlPiUgDQogICAgICAgICAgICAgICAgc3RfYXNfc2YoKQ0KICAgICAgICANCiAgICAgICAgYWxsX2NvbyA8LSANCiAgICAgICAgICAgICAgICBhY3Nfbm9ybWxfY29tbXNfc2YgJT4lIA0KICAgICAgICAgICAgICAgIGZpbHRlcighaXMubmEoQ09NTVVOSVRZKSkgJT4lIA0KICAgICAgICAgICAgICAgIHVuY2xhc3MgJT4lIA0KICAgICAgICAgICAgICAgIGFzX3RpYmJsZSAlPiUgDQogICAgICAgICAgICAgICAgZG1hcChhZ2dyZWdhdGVfY29tbXMpICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoZ2VvbWV0cnkgPSBzdF9zZmMoZ2VvbWV0cnkpKSAlPiUgDQogICAgICAgICAgICAgICAgc3RfYXNfc2YoKQ0KICAgICAgICANCiAgICAgICAgYWNzX25vcm1sX2FsbF9nZW9tc19zZiA8LSANCiAgICAgICAgICAgICAgICBsaXN0KGFjc19ub3JtbF9jb21tc19zZiwgY29tbXMsIGFsbF9jb28pICU+JSANCiAgICAgICAgICAgICAgICByZWR1Y2UocmJpbmQuc2YpICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoR0VPR1JBUEhZID0gY2FzZV93aGVuKGlzLm5hKC4kTkFNRSkgJiAhaXMubmEoLiRDT01NVU5JVFkpIH4gJ2NvbW11bml0eScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy5uYSguJE5BTUUpICYgaXMubmEoLiRDT01NVU5JVFkpIH4gJ2NvbW11bml0aWVzIChtdWx0aXBsZSknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiROQU1FICVpbiUgJ1NFQUNDRCcgfiAnY291bnR5IHN1YmRpdmlzaW9uJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kTkFNRSAlaW4lICdLQycgfiAnY291bnR5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAndHJhY3QnKSkgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShOQU1FID0gY2FzZV93aGVuKA0KICAgICAgICAgICAgICAgICAgICAgICAgaXMubmEoLiROQU1FKSAmIC4kR0VPR1JBUEhZICVpbiUgJ2NvbW11bml0aWVzIChtdWx0aXBsZSknIH4gJ0NPTycsDQogICAgICAgICAgICAgICAgICAgICAgICBpcy5uYSguJE5BTUUpICYgLiRDT01NVU5JVFkgJWluJSAnUlYnIH4gLiRDT01NVU5JVFksDQogICAgICAgICAgICAgICAgICAgICAgICBpcy5uYSguJE5BTUUpICYgLiRDT01NVU5JVFkgJWluJSAnV0MnIH4gLiRDT01NVU5JVFksDQogICAgICAgICAgICAgICAgICAgICAgICBpcy5uYSguJE5BTUUpICYgLiRDT01NVU5JVFkgJWluJSAnU1RLVycgfiAuJENPTU1VTklUWSwNCiAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAuJE5BTUUpKSAlPiUgDQogICAgICAgICAgICAgICAgbXV0YXRlKE5BTUVfRlVMTCA9IGNhc2Vfd2hlbigNCiAgICAgICAgICAgICAgICAgICAgICAgIC4kTkFNRSAlaW4lICdDT08nIH4gJ0NvbW11bml0aWVzIG9mIE9wcG9ydHVuaXR5JywNCiAgICAgICAgICAgICAgICAgICAgICAgIC4kTkFNRSAlaW4lICdSVicgfiAnUmFpbmllciBWYWxsZXknLA0KICAgICAgICAgICAgICAgICAgICAgICAgLiROQU1FICVpbiUgJ1dDJyB+ICdXaGl0ZSBDZW50ZXInLA0KICAgICAgICAgICAgICAgICAgICAgICAgLiROQU1FICVpbiUgJ1NUS1cnIH4gJ1NlYVRhYy9UdWt3aWxhJywNCiAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAuJE5BTUVfRlVMTCkpICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoR0VPR19GQ1QgPSBmYWN0b3IoR0VPR1JBUEhZLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCd0cmFjdCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW11bml0eScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW11bml0aWVzIChtdWx0aXBsZSknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3VudHkgc3ViZGl2aXNpb24nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3VudHknKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJlZCA9IFRSVUUpKSAlPiUgDQogICAgICAgICAgICAgICAgc2VsZWN0KE5BTUU6U0VBQ0NEX0xHTCxHRU9HUkFQSFksR0VPR19GQ1QsZ2VvbWV0cnksbWF0Y2hlcygnMjAxNScpLG1hdGNoZXMoJzIwMDknKSkgDQogICAgICAgIA0KICAgICAgICBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSANCiAgICAgICAgICAgICAgICB3cml0ZV9yZHMocm9vdF9maWxlKCcuLzEtZGF0YS80LWludGVyaW0vYWNzX25vcm1sX2FsbF9nZW9tc19zZi5yZHMnKSkNCiAgICAgICAgDQp9DQogICAgICAgIA0KYWNzX25vcm1sX2FsbF9nZW9tc19zZiA8LSByZWFkX3Jkcyhyb290X2ZpbGUoJy4vMS1kYXRhLzQtaW50ZXJpbS9hY3Nfbm9ybWxfYWxsX2dlb21zX3NmLnJkcycpKQ0KDQoNCmFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICBhcnJhbmdlKGZjdF9yZXYoR0VPR19GQ1QpKSAlPiUgDQogICAgICAgIHNlbGVjdChOQU1FOkdFT0dfRkNULGdlb21ldHJ5LG1hdGNoZXMoJzIwMTUnKSxtYXRjaGVzKCcyMDA5JykpICU+JSANCiAgICAgICAgdW5jbGFzcyAlPiUgDQogICAgICAgIGFzX3RpYmJsZSgpDQoNCmBgYA0KDQpgYGB7ciBjZW5zdXMtbm90LWFjcy1hbGwtZ2VvbXN9DQojIFRoaXMgc2F2ZXMgYSB2ZXJzaW9uIG9mIHRoZSBhY3MgZGF0YSB0aGF0IGRvZXMgbm90IHVzZSBgYWNzYCBmb3JtYXQNCiMgVGhpcyB3aWxsIGJlIHVzZWZ1bCBmb3Igc3VtbWFyeSB0YWJsZXMgYW5kIHZpc3VhbGl6YXRpb25zLg0KDQppZighZmlsZS5leGlzdHMocm9vdF9maWxlKCcuLzEtZGF0YS81LXRpZHkvY29vLWNlbnN1cy1ub3QtYWNzLWFsbC1zZi5yZHMnKSkpew0KICAgICAgICBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSANCiAgICAgICAgICAgICAgICB1bmNsYXNzICU+JSANCiAgICAgICAgICAgICAgICBhc190aWJibGUoKSAlPiUgDQogICAgICAgICAgICAgICAgZ2F0aGVyKFRCTCxBQ1MsbWF0Y2hlcygnMjAxNXwyMDA5JykpICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoRVNUID0gbWFwX2RibChBQ1MsZXN0aW1hdGUpICU+JSByb3VuZF9hbnkoMSkgJT4lIGFzLmludGVnZXIoKSkgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShUWVBFID0gJ0VTVCcpICU+JSANCiAgICAgICAgICAgICAgICB1bml0ZShUQkxfRVNULFRCTCxUWVBFLHNlcCA9ICdfJykgJT4lIA0KICAgICAgICAgICAgICAgIHNwcmVhZChUQkxfRVNULEVTVCkgJT4lIA0KICAgICAgICAgICAgICAgIHNlbGVjdCgtQUNTKSAlPiUgDQogICAgICAgICAgICAgICAgc3RfYXNfc2YoKSAlPiUgDQogICAgICAgICAgICAgICAgd3JpdGVfcmRzKHJvb3RfZmlsZSgnLi8xLWRhdGEvNS10aWR5L2Nvby1jZW5zdXMtbm90LWFjcy1hbGwtc2YucmRzJykpDQp9DQpgYGANCg0KDQoNCiMjIyMgQ29tbXVuaXR5IE1hcHMNCmBgYHtyIGNlbnN1cy1hY3MtY29tbXMtbWFwLCBmaWcuaGVpZ2h0PTEuMjUsIGZpZy53aWR0aD0xLCAgZmlnLnNob3c9J2hvbGQnLCBkcGk9MTUwfQ0KDQojIFByaW50IENvbW11bml0eSBNYXBzDQoNCnNob3dfY29tbV9tYXAgPC0gZnVuY3Rpb24obm0sIGNvbG9yLCBmbG9hdF9kaXIpew0KICAgICAgICANCiAgICAgICAgIyBNYXAgQ2VudGVyDQogICAgICAgIA0KICAgICAgICBzdF9jZW50cm9pZF9xdCA8LSBxdWlldGx5KHN0X2NlbnRyb2lkKQ0KICAgICAgICANCiAgICAgICAgY250ciA8LSBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSANCiAgICAgICAgICAgICAgICBmaWx0ZXIoR0VPR1JBUEhZICVpbiUgJ2NvbW11bml0aWVzIChtdWx0aXBsZSknKSAlPiUgDQogICAgICAgICAgICAgICAgc3RfYmJveCgpDQogICAgICAgIGhhbGZ3YXkgPC0gZnVuY3Rpb24obWF4LG1pbil7KG1heC1taW4pLzIgKyBtaW59DQogICAgICAgIA0KICAgICAgICBsbmcgPC0gY250cltbJ3htaW4nXV0NCiAgICAgICAgbGF0IDwtIGhhbGZ3YXkoY250cltbJ3ltYXgnXV0sY250cltbJ3ltaW4nXV0pDQogICAgICAgIA0KICAgICAgICBjb21tX3NwIDwtIA0KICAgICAgICAgICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICAgICAgICAgIHNlbGVjdChldmVyeXRoaW5nKCksLW1hdGNoZXMoJzIwMTV8MjAwOScpKSAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKEdFT0dSQVBIWSAlaW4lICd0cmFjdCcgJiBDT01NVU5JVFkgJWluJSBubSkgJT4lIA0KICAgICAgICAgICAgICAgIGFzKCJTcGF0aWFsIikNCiAgICAgICAgDQogICAgICAgIGNvbW1fY250X3NwIDwtIA0KICAgICAgICAgICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICAgICAgICAgIHNlbGVjdChldmVyeXRoaW5nKCksLW1hdGNoZXMoJzIwMTV8MjAwOScpKSAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKEdFT0dSQVBIWSAlaW4lICdjb21tdW5pdHknICYgQ09NTVVOSVRZICVpbiUgbm0pICAlPiUgDQogICAgICAgICAgICAgICAgbXV0YXRlKGdlb21ldHJ5ID0gc3RfY2VudHJvaWQoZ2VvbWV0cnkpKSAlPiUNCiAgICAgICAgICAgICAgICBhcygiU3BhdGlhbCIpDQogICAgICAgIA0KICAgICAgICBjb21tX2JvdW5kc19zcCA8LSANCiAgICAgICAgICAgICAgICBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSANCiAgICAgICAgICAgICAgICBzZWxlY3QoZXZlcnl0aGluZygpLC1tYXRjaGVzKCcyMDE1fDIwMDknKSkgJT4lIA0KICAgICAgICAgICAgICAgIGZpbHRlcihHRU9HUkFQSFkgJWluJSAnY29tbXVuaXR5JyAmIENPTU1VTklUWSAlaW4lIG5tKSAgJT4lDQogICAgICAgICAgICAgICAgYXMoIlNwYXRpYWwiKSAlPiUgDQogICAgICAgICAgICAgICAgYXMoIlNwYXRpYWxMaW5lcyIpDQogICAgICAgIA0KICAgICAgICBjb21tX3NwICU+JSANCiAgICAgICAgICAgICAgICBtaXNjZ2lzOjpteUxmbHRHcmV5KCkgJT4lDQogICAgICAgICAgICAgICAgbXlMZmx0T3B0cyh0aWxlTGFiZWxzID0gRkFMU0UsIGZ1bGxTY3JlZW5CdG4gPSBGQUxTRSwgYnVtcFRpbGVMYWJlbHMgPSBGQUxTRSkgJT4lIA0KICAgICAgICAgICAgICAgIGFkZFBvbHlnb25zKHNtb290aEZhY3RvciA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBjb2wyaGV4KCJ3aGl0ZSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodCA9IC41LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgPSAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvciA9IGNvbG9yLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5ID0gLjY1DQogICAgICAgICAgICAgICAgKSAlPiUgDQogICAgICAgICAgICAgICAgYWRkUG9seWxpbmVzKGRhdGEgPSBjb21tX2JvdW5kc19zcCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHkgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IHByb2pfZGFya19ncmV5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ID0gMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21vb3RoRmFjdG9yID0gMCkgJT4lDQogICAgICAgICAgICAgICAgYWRkQXdlc29tZU1hcmtlcnMoZGF0YSA9IGNvbW1fY250X3NwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBtYXJrZXJPcHRpb25zKG9wYWNpdHkgPSAwKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IH4gTkFNRV9GVUxMLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbE9wdGlvbnMgPSBsYWJlbE9wdGlvbnMobm9IaWRlID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYygwLDApLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSAnYXV0bycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0T25seSA9IFRSVUUpKSAlPiUgDQogICAgICAgICAgICAgICAgc2V0VmlldyhsbmcsbGF0LHpvb20gPSA5KSAlPiUgDQogICAgICAgICAgICAgICAgbWlzY2dpczo6c3R5bGVXaWRnZXQoc3R5bGUgPSBwYXN0ZTAoImZsb2F0OiIsZmxvYXRfZGlyLCI7bWFyZ2luOjFweDsiLCJ0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dGV4dC1zaGFkb3c6LTFweCAwICNGRkZGRkYsMCAxcHggI0ZGRkZGRiwxcHggMCAjRkZGRkZGLDAgLTFweCAjRkZGRkZGIikpICU+JSANCiAgICAgICAgICAgICAgICBwcmludCgpDQp9DQoNCm5hbWVzIDwtIGMoJ1JWJywnV0MnLCdTVEtXJykNCg0KY29sb3JzIDwtIGMoYmx1ZSwgZ3JlZW4sIHJlZCkNCg0KZmxvYXRfZGlycyA8LSBjKCdsZWZ0JywnbGVmdCcsJ25vbmUnKQ0KDQpwd2FsayhsaXN0KG5hbWVzLCBjb2xvcnMsIGZsb2F0X2RpcnMpLHNob3dfY29tbV9tYXApDQoNCg0KYGBgDQo=